/**
 * Copyright 2007 Sensatic.org
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.sensatic.dynawork.groovy

import com.ctc.wstx.stax.WstxOutputFactory
import org.codehaus.jettison.mapped.MappedNamespaceConvention
import org.codehaus.jettison.mapped.MappedXMLStreamWriter

/**
 * Tests Stax builder with XML and JSON
 * 
 * @author <a href="dejan@nighttale.net">Dejan Bosanac</a>
 */
class StaxBuilderTest extends GroovyTestCase {

	void testWoodstox() {
		WstxOutputFactory factory = new WstxOutputFactory()
		StringWriter writer = new StringWriter()
		StaxBuilder builder = new StaxBuilder(factory.createXMLStreamWriter(writer))
        builder.root1(a:5, b:7) {
            elem1('hello1')
            elem2('hello2')
            elem3(x:7)
        }
		assert writer, """<root1 a="5" b="7"><elem1>hello1</elem1><elem2>hello2</elem2><elem3 x="7" /></root1>"""
	}
	
	void testJettison() {
        MappedNamespaceConvention con = new MappedNamespaceConvention();
		StringWriter writer = new StringWriter()
		MappedXMLStreamWriter mappedWriter = new MappedXMLStreamWriter(con, writer);
		StaxBuilder builder = new StaxBuilder(mappedWriter)
        builder.root1(a:5, b:7) {
            elem1('hello1')
            elem2('hello2')
            elem3(x:7)
        }
		assert writer, """{"root1":{"@a":"5","@b":"7","elem1":"hello1","elem2":"hello2","elem3":{"@x":"7"}}}"""		
	}

}
